package hash;

import java.util.ArrayList;
import java.util.List;

/**
 * 扩容最直接的问题，就是需要把元素拆分到新的数组中。
 * 拆分元素的过程中，原jdk1.7中会需要重新计算哈希值，但是到jdk1.8中已经进行优化，不在需要重新计算，提升了拆分的性能。
 */
public class d1_扩容元素拆分 {

	public static void main(String[] args) {

		List<String> list = new ArrayList<>();
		list.add("jlkk");
		list.add("lopi");
		list.add("jmdw");
		list.add("e4we");
		list.add("io98");
		list.add("nmhg");
		list.add("vfg6");
		list.add("gfrt");
		list.add("alpo");
		list.add("vfbh");
		list.add("bnhj");
		list.add("zuio");
		list.add("iu8e");
		list.add("yhjk");
		list.add("plop");
		list.add("dd0p");
		for (String key : list) {
			int hash = b1_扰动函数.hash(key);
			int idx_16 = (16 - 1) & hash;
			String hash_bit = Integer.toBinaryString(hash);
			System.out.println("字符串：" + key + " \tIdx(16)：" + ((16 - 1) & hash) + " \tBit值：" + Integer.toBinaryString(hash) + " - " + Integer.toBinaryString(hash & 16) + " \t\tIdx(32)：" + ((
					Integer.toBinaryString(key.hashCode()) + " " + Integer.toBinaryString(hash) +
							" " + Integer.toBinaryString((32 - 1) & hash))));
		}

	}

}
